package done.easy_901_1000;

import org.junit.Test;

import java.util.List;

import static com.study.util.LogUtil.info;
import static java.lang.Math.max;

/**
 * 989. Add to Array-Form of Integer 数组形式的整数加法
 * <p>
 * 对于非负整数 X 而言，X 的数组形式是每位数字按从左到右的顺
 * 序形成的数组。例如，如果 X = 1231，那么其数组形式为 [1,2,3,1]。
 * 给定非负整数 X 的数组形式 A，返回整数 X + K 的数组形式。
 * <p>
 * 示例 1：
 * 输入：A = [1, 2, 0, 0], K = 34
 * 输出：    [1, 2, 3, 4]
 * 解释：1,200 + 34 = 1,234
 * 解释 2：
 * 输入：A = [2, 7, 4], K = 181
 * 输出：    [4, 5, 5]
 * 解释：274 + 181 = 455
 * 示例 3：
 * 输入：A = [2, 1, 5], K = 806
 * 输出： [1, 0, 2, 1]
 * 解释：215 + 806 = 1,021
 * 示例 4：
 * 输入：A = [9, 9, 9, 9, 9, 9, 9, 9, 9, 9], K = 1
 * 输出： [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
 * 解释：9,999,999,999 + 1 = 10,000,000,000
 */
@SuppressWarnings("all")
public class AddToArray_FormOfInteger {

    public List<Integer> addToArrayForm(int[] A, int K) {
        // 190412 first
        return null;
    }

    @Test
    public void test() {
        info("1234 -> {}", addToArrayForm(new int[]{1, 2, 0, 0}, 34));
        info("455 -> {}", addToArrayForm(new int[]{2, 7, 4}, 181));
        info("1021 -> {}", addToArrayForm(new int[]{2, 1, 5}, 806));
        info("10000000000 -> {}", addToArrayForm(new int[]{9, 9, 9, 9, 9, 9, 9, 9, 9, 9}, 1));
    }
}
















































/*
public List<Integer> addToArrayForm(int[] A, int K) {
    int lenK = ("" + K).length();
    int lenA = A.length;

    // 进位
    int carry = 0;
    List<Integer> list = new LinkedList<Integer>();

    int sum;
    for (int i = 0; i < max(lenA, lenK); i++) {

        sum = K % 10 + carry;

        //三个元素需要相加  K + 进位carry + A[i]
        if (i < lenA)
            sum += A[lenA - i - 1];

        // 余数进队列
        list.add(0, sum % 10);

        // 进位
        carry = sum / 10;

        // 被加数
        K = K / 10;
    }

    // 还有余数, 就在头部加上carry
    if (carry > 0)
        list.add(0, carry);

    return list;
}
*/
